package tp1


import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.Map
import tp1traits.carrera.Estadisticas

class Alumno (nombre: String, apellido: String, carrera: Carrera) extends Persona (nombre, apellido){
	var a_materias = new ArrayBuffer[Materia]()
		
	def filtrarMisCursos():ArrayBuffer[Curso]={
	  var cursos = new ArrayBuffer[Curso]
	  this.carrera.materias foreach{materia => cursos appendAll materia.dameCursosDeAlumno(this)}
	  cursos
	}
	
	def darseDeAltaEnCarrera(){
	  this.carrera.darDeAltaA(this)
	}
	
	def agregarMateria(materia:Materia){
	  a_materias += materia
	}
	/**auxiliar*/
	override def listaDeNotas():ArrayBuffer[Nota]={
     var listaDeNotas = new ArrayBuffer[Nota]()
     this.a_materias foreach{materia => listaDeNotas.appendAll(materia.econtrarNotasDeAlumno(this))}
     listaDeNotas
	}
	
	override def cursosRealizados: (Int,Int) ={
	   
	   var cursosAprobados = 0
	   var cursosAbandonados = 0
	   this.a_materias foreach{f_materia => if(f_materia.aproboMateria(this)) {cursosAprobados += 1}
	     cursosAbandonados += f_materia.cantidadAbandonos(this)}
	   (cursosAprobados,cursosAbandonados)
	 }
	 
   
   def listaCorteAnual(anio:Int):ArrayBuffer[Curso]={
     filtrarMisCursos() filter(curso => curso.esDeAnio(anio))
   }
   
    override def corteAnual(anio:Int){
     var notasCA = new ArrayBuffer[Nota]
     listaCorteAnual(anio) foreach( curso => notasCA += curso.obtenerNotaAlumno(this))
     this.notas = notasCA
   }
}
	 

	 
